import os
import sys
import shutil

def build_frontend():
	"""构建前端项目"""
	try:
		# 进入WEB目录
		os.chdir("WEB")
		# 安装依赖
		if os.system("pnpm install") != 0:
			raise Exception("pnpm install 失败")
		# 构建项目
		if os.system("pnpm build") != 0:
			raise Exception("pnpm build 失败")
		# 返回根目录
		os.chdir("..")
		print("前端项目构建成功")
	except Exception as e:
		print(f"前端构建失败: {e}")
		sys.exit(1)

def move_dist():
	"""移动dist目录到internal/v2/web"""
	try:
		# 如果目标目录已存在，先删除
		dist_target = "internal/v2/web/dist"
		if os.path.exists(dist_target):
			shutil.rmtree(dist_target)
		# 移动dist目录
		shutil.move("WEB/dist", dist_target)
		print("dist目录移动成功")
	except Exception as e:
		print(f"移动dist目录失败: {e}")
		sys.exit(1)
	# 删除 dist 目录
	# shutil.rmtree("WEB/dist")
	# 删除根目录的 dist
	# shutil.rmtree("dist")

def tidy():
	if os.system("go mod tidy") != 0:
		print("go mod tidy 失败")
		sys.exit(1)

def generate_swagger():
	"""生成Swagger文档"""
	if os.system("swag init -g cmd/main.go --dir .") != 0:
		print("生成Swagger文档失败")
		sys.exit(1)
	print("Swagger文档生成成功")

def compile_go_code():
	"""编译Go代码"""
	if os.system("go build cmd/main.go") != 0:
		print("编译失败")
		sys.exit(1)
	print("Go代码编译成功")

def start_web_mode(port):
	"""启动Web模式"""
	if os.system(f".\main.exe -web ") != 0:
		print("启动Web模式失败")
		sys.exit(1)

def main():
	# 检查是否在根目录运行
	if not os.path.exists("cmd/main.go"):
		print("请在项目根目录运行此脚本")
		sys.exit(1)

	# 构建前端
	build_frontend()
	
	# 移动dist目录
	move_dist()

	# 整理Go模块
	tidy()

	# 直接使用默认端口8080
	port = "8080"

	# 生成Swagger文档
	generate_swagger()

	# 编译Go代码
	compile_go_code()

	# 启动Web模式
	start_web_mode(port)

if __name__ == "__main__":
	main()